home *** CD-ROM | disk | FTP | other *** search
/ Windows Expert / Windows Expert.iso / windownt / cshx86.zip / README.TOO < prev    next >
Text File  |  1993-04-28  |  30KB  |  730 lines

  1. Hamilton C shell(tm) for Windows NT(tm)  Release Notes 2.1.d
  2. Copyright (c) 1989-1993 by Hamilton Laboratories.  All rights reserved.
  3.  
  4.  
  5. Change Summary
  6.  
  7. The basic release history for the C shell has been:
  8.  
  9.    Dec 1988    1.0   First release, running on OS/2 1.0.
  10.    Jan 1989    1.01  Cleanup and final release for OS/2 1.0.
  11.    Feb 1989    1.02  First release for OS/2 1.1 (Presentation Manager).
  12.    Mar 1989    1.03  Cleanup and base release for OS/2 1.1.
  13.    Aug 1989    1.04  Command line editing and filename and command
  14.                      completion added.
  15.    Mar 1990    1.05  Support for OS/2 1.2, HPFS and long filenames added
  16.                      along with many important utilities including grep,
  17.                      diff, head, tail, sed, etc.
  18.    Feb 1991    1.06  Support for user-defined screen colors, inheritable
  19.                      local variables, higher performance, etc.
  20.    Jul 1992    2.0   First release from a unified codebase supporting
  21.                      OS/2 and Windows NT.
  22.    Apr 1993    2.1   Support for Berkeley mode scripts, better error
  23.                      diagnostics, support for Windows NT March beta.
  24.  
  25. Along the way, Hamilton C shell has grown from about 35,000 lines of C
  26. to over 95,000 lines.  All of it has been created from scratch by
  27. Hamilton Laboratories.  Not one line was ported from or written on anything
  28. but OS/2 or Windows NT.
  29.  
  30. This document will contain a detailed summary of all the changes made
  31. along the way from one release to another, beginning with the initial 2.0
  32. release for NT.  Changes which only affect certain builds (e.g., OS/2) are
  33. so indicated.
  34.  
  35. Changes are presented chronologically, so if you're updating from a previous
  36. release, you'll want to jump in somewhere in the middle to start reading.
  37.  
  38. At the very end of this document is a short list of the known bugs and
  39. limitations.  You'll also find contact information in case you encounter a
  40. problem or have a suggestion.
  41.  
  42.  
  43. Fix Level 2.0 Changes:
  44.  
  45. 1.  Initial product release for Windows NT.
  46.  
  47.  
  48. Fix Level 2.0.a Changes:
  49.  
  50. 2.  [OS/2]  The 2.0 version of ls wasn't adding up allocated sizes of
  51.     directories properly when using the -Lw options.
  52.  
  53.  
  54. Fix Level 2.0.b Changes:
  55.  
  56. 3.  [OS/2] The OS/2 shell can now be run when escaping to the command line from
  57.     the OS/2 1.x and 2.0 installation disks.
  58.  
  59. 4.  [NT] Final cleanup on the C shell codebase to make it portable to the 
  60.     MIPS RISC processor under NT.
  61.  
  62. 5.  [NT] Trying to run a .bat or .cmd file started cmd.exe, but didn't actually
  63.     run the script.  It does now.
  64.  
  65. 6.  [NT/x86]  A codegen error in the compiler caused :s/.../.../ operations
  66.     to trash the heap, causing the C shell to crash randomly.
  67.  
  68. 7.  [NT] A minor bug in the common routines used to read number pad keystrokes
  69.     was fixed.
  70.  
  71. 8.  [NT] A number of bugs in tar.exe that caused it problems opening new tar
  72.     files and setting or reporting timestamps on files extracted from or listed
  73.     in a tar file were fixed.
  74.  
  75. 9.  [NT] More no longer fails with a complaint that it can't scroll or fill the
  76.     console if, e.g., you go to the end of a file, page down and then search
  77.     backward for text that's not found.  The console api's were erroneously
  78.     reporting failures when in fact they worked fine.
  79.  
  80.  
  81. Fix Level 2.0.c Changes:
  82.  
  83. 10. [NT] The common screen painting library used by the shell and a number of
  84.     the utilities would sometimes set the cursor incorrectly if scrolling was
  85.     involved.  It should now be correct.
  86.  
  87. 11. [NT] cut.exe couldn't read files specified on the command line.  It can
  88.     now.
  89.  
  90. 12. The di (diff interative) alias for diff -b! (merged diff using color,
  91.     ignoring white space differences) has been added to startup.csh and the
  92.     definition for the mi (more interactive) alias has been fixed for NT.
  93.  
  94. 13. [NT] ver.csh was added to the bin directory.
  95.  
  96. 14. [NT] The common keyboard routines now recognize ctrl-H as the same as a
  97.     backspace and ctrl-[ as an escape.
  98.  
  99.  
  100. Fix Level 2.0.d Changes:
  101.  
  102. 15. A long-standing bug in the shell's command line editing routines that
  103.     could cause the screen to be painted incorrectly has been corrected.
  104.  
  105. 16. [NT] A bug in the common seek logic used in tar, tail, and xd caused them
  106.     to have problems reading files that came in over a pipe on stdin.  That
  107.     problem has been fixed.  binedit, more, sed and tee used the same logic
  108.     and were recompiled even though they were unaffected.
  109.  
  110. 17. A long-standing, but usually benign bug in the more filter's ISAM
  111.     mechanism was fixed.
  112.  
  113. 18. The shell no longer complains under NT nor fails under OS/2 if one tries
  114.     to edit a history reference (e.g., with !!:s/X/Y/) that's > 64K.
  115.  
  116. 19. [OS/2] dskwrite now properly detects and autoformats any unformatted
  117.     disks it's given as disks 2 or following when using dskwrite -ac.
  118.  
  119. 20. The sizeof sample script has been improved to run a bit faster and to
  120.     avoid problems running out of memory in the C shell if a big directory
  121.     is being measured.
  122.  
  123.  
  124. Fix Level 2.0.e Changes:
  125.  
  126. 21. [NT] The common keyboard routines have been fixed to silently gobble up
  127.     CapsLock keystrokes.  They were being passed through to the application.
  128.     The shell, mv, cp, rm and more were affected.
  129.  
  130. 22. [NT] The help screens for label, more and tar and for the internal
  131.     commands hashstat, kill and ps have been edited to replace references
  132.     to OS/2 with NT.
  133.  
  134. 23. eval -h now indicates "success" as in its return value.  (It no longer
  135.     causes a loop to exit.)
  136.  
  137. 24. [NT] The C shell no longer litters the output generated by the setenv
  138.     command with current directory variables such as "=C:".  Also, it now
  139.     correctly reads all current directories out of the environment at
  140.     startup.
  141.  
  142. 25. [NT] The C shell now properly treats environmental variable names as
  143.     case-insensitive.  (They're still case sensitive under OS/2.)  The set,
  144.     unset and @ statements are case-sensitive (that's so you can still create
  145.     shell variables that differ from environmental variables only by case)
  146.     but the setenv and unsetenv statements and $var and other variable
  147.     references first try case-sensitive, then case-insensitive variable
  148.     lookups.
  149.  
  150.  
  151. Fix Level 2.0.f Changes:
  152.  
  153. 26. [NT] The NT version of the C shell can now determine, just as the OS/2
  154.     version can, whether a child will run in the same or a different window.
  155.     If it's a different window, the shell immediately prompts for a new
  156.     command.
  157.  
  158. 27. [NT] hlabel.exe now includes a warning in the help screen that setting the
  159.     volume label is disabled under NT due to a kernel limitation.  Also, it
  160.     properly gives an error message if you type "label a:foo".
  161.  
  162.  
  163. Fix Level 2.0.g Changes:
  164.  
  165. 28. [NT/x86] rm -x was broken in the 2.0.e build when we switched to the July
  166.     SDK compiler; the optimizer generated bad code that we didn't spot.
  167.     Rebuilding with optimization turned off with pragmas fixed the problem.
  168.  
  169.  
  170. Fix Level 2.0.h Changes:
  171.  
  172. 29. All the utilities have been cleaned up in preparation for the 32-bit
  173.     release for OS/2 2.0.
  174.  
  175. 30. binedit, chmod, dim, fgrep and head no longer routinely translate
  176.     filenames to lower case, thus avoiding any problems with mixed-case
  177.     filesystems.
  178.  
  179. 31. [OS/2] more no longer has problems forward or backward searching across
  180.     more than 32,000 lines.
  181.  
  182. 32. When moreh [OS/2] or hmore [NT] recognizes that it's reading from a
  183.     file, meaning it can use seeks to re-read any data it discards, it
  184.     now buffers only a 100K window into the file.  That reduces swapping
  185.     under OS/2 and dramatically improves heap performance under NT without
  186.     sacrificing functionality.
  187.  
  188. 33. [NT] The C shell now correctly recognizes that it must wait for DOS apps
  189.     to complete before prompting for another command.
  190.  
  191. 34. [NT] The C shell now responds to Close events from the pull-down on its
  192.     window.
  193.  
  194.  
  195. Fix Level 2.0.i Changes:
  196.  
  197. 35. [OS/2] markexe now understands how to mark 32-bit 2.0 applications.
  198.  
  199. 36. The ts.csh script was broken when quoting rules inside a backquoted
  200.     string were changed at release 1.06 but went unnoticed until now.
  201.     The fix was to delete the now superfluous escaped single quotes.
  202.  
  203. 37. If filename completion matched a file with a ! in the name, it wouldn't
  204.     always escape it.  Sometimes it'd just single quote it, causing it to
  205.     be mistaken for a history reference.
  206.  
  207. 38. des had a couple bugs.  Under NT, it would often fail with a divide by
  208.     zero due to improper initialization.  And under both NT and OS/2, it
  209.     didn't handle EOF if data was being read from stdin properly.  Both
  210.     problems have been fixed.
  211.  
  212.  
  213. Fix Level 2.0.j Changes:
  214.  
  215. 39. [OS/2] Since there's no .. entry in the root of a FAT drive, cd .. there
  216.     wouldn't work.  Instead, the C shell would try cd'ing to one of the CDPATH
  217.     directories.  It now does the right thing.
  218.  
  219.  
  220. Fix Level 2.0.k Changes:
  221.  
  222. 40. [OS/2] The change to markexe at 2.0.i broke it, causing markexe to garble
  223.     the .exe header.  It now works as it should.
  224.  
  225.  
  226. Fix Level 2.0.L Changes:
  227.  
  228. 41. [NT] Complete rebuild of everything for the October Beta version of NT.
  229.  
  230. 42. [NT] Background children are now protected from ^C in a console window
  231.     using the new CREATE_NEW_PROCESS_GROUP option to the CreateProcess api.
  232.     Also, the kill command now uses, by default, the new GenerateConsole-
  233.     CtrlEvent api call to send a ^Break to a child.  The advantage is that
  234.     if the child is willing to accept it, links to any DLL's are closed
  235.     properly.
  236.  
  237. 43. [NT] Support for the new shutdown and logoff signal events has been
  238.     added, allowing copies of the C shell to automatically exit when
  239.     shutdown or logoff is selected from the Program Manager.
  240.  
  241. 44. [NT] Support for the new LocalTime notion has been added to the date
  242.     and ls utilities.
  243.  
  244. 45. Additional work has been done on all the utilities and the shell in
  245.     particular to prepare for a full 32-bit OS/2 2.0 release from one common
  246.     source base.
  247.  
  248. 46. [NT] The -s option to fgrep and grep didn't work.  It does now.
  249.  
  250. 47. [OS/2] A number of bad semaphore races were inadvertently introduced
  251.     when support for NT was added at release 2.0.  Apparently, they never
  252.     caused problems (none were ever reported) but, in any event, they are
  253.     fixed now.
  254.  
  255.  
  256. Fix Level 2.0.m Changes:
  257.  
  258. 48. [NT] The built-in sleep command no longer forgets to close its open
  259.     thread handle.  Previously, after running sleep roughly 5000 times, it'd
  260.     fail, claiming it couldn't start a new thread.
  261.  
  262. 49. [NT] The -i (interactive) option for mv, cp and rm now works.
  263.  
  264. 50. [NT] Minor changes were made to the shell to prepare it for the DEC
  265.     Alpha version of NT.
  266.  
  267. 51. [NT] Support for LocalTime has been added to the touch utility.
  268.  
  269. 52. [NT] The NTVersion (NT Build number) and WinVersion built-in variables
  270.     have been added and used in the ver.csh script.
  271.  
  272. 53. A new -u (unbuffered) option has been added to the C shell to allow
  273.     it to be used over a communications line.
  274.  
  275. 54. First release of a demo version of the shell and all its utilities.
  276.  
  277.  
  278. Fix Level 2.0.n Changes:
  279.  
  280. 55. [NT] Split was broken.  It works now.
  281.  
  282.  
  283. Fix Level 2.0.o Changes:
  284.  
  285. 56. [NT] If an ordinary foreground child process was started, wait would not
  286.     work; it'd think the child never completed.  It works now.
  287.  
  288. 57. [NT] ^C now properly kills nested C shell scripts.  Previously, ^C only
  289.     worked if it happened to come in while the top-most level was running.
  290.  
  291. 58. [NT] The shell could trap in certain situations, usually involving labels.
  292.     For example, the one-line script, "foo: echo hello", would trap.  It
  293.     works now.
  294.  
  295. 59. [NT] If the current directory on the current drive was changed in a
  296.     script or other thread, the shell wouldn't properly set it back for child
  297.     processes created from other threads.  That's been fixed.
  298.  
  299. 60. The w option to a search/replace operation in sed was broken.  It's now
  300.     working.
  301.  
  302. 61. [NT] The w command to sed didn't know how to open a file that didn't
  303.     already exist.  It does now.
  304.  
  305. 62. [NT/MIPS] The search/replace command to sed often failed due to datatype
  306.     misalignment in the compiled sed script.  That's been fixed.
  307.  
  308. 63. [NT] The shell now issues an error message if an attempt is made to pass
  309.     a command line longer than 32,282 characters (the limit for the NT
  310.     CreateProcess call) to a child.
  311.  
  312. 64. The fullpath function now knows not to let .. segments back up over the
  313.     system or resource names in a UNC (network) name.  Also, the driveno
  314.     function now reports an error if its argument has an invalid drive
  315.     specification or is a UNC name.
  316.  
  317. 65. The shell now runs logout.csh scripts properly.  A primordial bug caused
  318.     it to issue a prompt if it found a logout.csh script (it shouldn't have)
  319.     and run just the first statement.
  320.  
  321. 66. [NT] Erroneous statements like "cat >" (i/o redirection with no filename
  322.     following) no longer cause the shell to crash.  (Actually, this bug has
  323.     been in the OS/2 version all along also but just didn't happen to cause
  324.     problems.)
  325.  
  326. 67. [NT] File sharing or other errors that prevented a file from being copied
  327.     are now reported by cp and mv.  Previously, the copy would fail, but
  328.     there'd be no warning.
  329.  
  330.  
  331. Fix Level 2.0.p Changes:
  332.  
  333. 68. Rerunning a statement that set any of the colors variables to a literal
  334.     (e.g., "for i = 1 to 10 do setenv COLORS = black on white; end") used to
  335.     cause a trap.  It works now.
  336.  
  337. 69. Escape characters in a substitution containing command or variable
  338.     subsitutions that were edited to produce more than one word were not
  339.     correctly processed.  E.g.,
  340.  
  341.          echo "`echo a b`:s/a/A/^""
  342.  
  343.     produced:
  344.  
  345.          A b^"
  346.  
  347.     It should have produced (as it does now):
  348.  
  349.          A b"
  350.  
  351. 70. A long-standing, but only recently reported bug that could cause traps
  352.     and assert failures doing a cd +c to a subdirectory on another drive
  353.     has been found and corrected.
  354.  
  355. 71. unset'ing or unsetenv'ing a non-existent variable is no longer treated
  356.     as an error.
  357.  
  358. 72. [NT/Alpha] First release with support for the DEC Alpha processor.
  359.  
  360. 73. [OS/2 2.0] First build with complete, working, debugged support for
  361.     use of 32-bit code and the 32-bit API's under OS/2 2.0.
  362.  
  363. 74. [NT] The SHELL variable, if wasn't already defined in the inherited
  364.     environment, would be set to the pathname of the C shell, but with the
  365.     last character dropped.  This has been fixed.
  366.  
  367. 75. ls.exe now accepts a -q (quiet) option, telling ls not to complain
  368.     about non-existent files.  Also, it's more consistent when it does
  369.     complain.  (Previously, it would not complain if it was asked to look
  370.     for an "impossible" name, e.g., a long filename on a FAT drive.)  ls
  371.     also now looks for an LSOPTIONS environmental variable.
  372.  
  373. 76. sed will now ignore Ctrl-Z characters between statements in a script.
  374.     This change lets it process scripts created with editors that insist
  375.     on pasting a Ctrl-Z (EOF) character onto the end of the files they
  376.     produce.
  377.  
  378. 77. [NT] The help alias has been deleted from startup.csh.  It really
  379.     applied only to OS/2.
  380.  
  381. 78. [NT] The cl.csh (compile and link) and makecpgm.csh (make all the C
  382.     programs) scripts have been added to the samples directory along with
  383.     a sample skip file containing fragments of lines that should be skipped in
  384.     the compiler/linker output.
  385.  
  386.  
  387. Fix Level 2.0.q Changes:
  388.  
  389. 79. [NT & OS/2 2.0] A very minor performance improvement was made, eliminating
  390.     some unnecessary checks for stack overflow.  (The check was superfluous
  391.     because under NT and 2.0, the system grows the stack automatically as
  392.     needed anyway.)
  393.  
  394. 80. The popup that appears if an internal assertion fails in the C shell
  395.     now goes away, showing what was underneath it, when you press a keystroke.
  396.  
  397.  
  398. Fix Level 2.0.r Changes:
  399.  
  400. 81. Minor fixups were done to the C shell, patchlnk, dskread, dskwrite,
  401.     markexe and setrows to allow demo versions to be built for OS/2.
  402.  
  403. 82. The cookie passed to demo versions of the utilities now expires
  404.     more slowly.  Previously, the cookie expired too fast to allow the
  405.     utilities demos to be run reliably from a CD-ROM.
  406.  
  407. 83. [NT] A typo in the kill -h help screen was corrected.
  408.  
  409. 84. [NT/x86] A compiler optimization bug in rm, mv, and cp that affected
  410.     recursive operations against directories has been fixed by turning off
  411.     certain optimizations where the problem occurred.
  412.  
  413. 85. [NT] pwd now exits with a correct return code of 0 if it's successful.
  414.     Also, it now reports an error if asked for the current directory on an
  415.     invalid drive.
  416.  
  417.  
  418. Fix Level 2.0.s Changes:
  419.  
  420. 86. [NT] ps was incorrectly reporting running threads as zombies and zombies
  421.     (threads that had ended but which hadn't been cleaned up yet) as running.
  422.     That's been fixed.
  423.  
  424.  
  425. Fix Level 2.0.t Changes:
  426.  
  427. 87. [NT] touch didn't properly recognize 4-digit year numbers.  It does now.
  428.  
  429. 88. [NT] ls and pwd didn't properly interpret the MIXEDCASEDRIVES variable
  430.     (off-by-one error).  Also, the shell and pwd didn't show current
  431.     directories in the right case on mixed case drives.
  432.  
  433. 89. [NT] The cl.csh script in samples directory didn't work properly with the
  434.     DEC Alpha compiler; it does now.  Also, it's been enhanced to look for the
  435.     skip file in the same directory with the cl.csh script.
  436.  
  437. 90. [NT] If a child of the C shell changed the console mode (e.g., disabling
  438.     processed input, thus turning off Ctrl-C processing) but didn't reset
  439.     things before exiting, it could affect the shell.  That's been fixed; now
  440.     the C shell resets the console mode every time it prompts for a new
  441.     command from the keyboard.
  442.  
  443.  
  444. Fix Level 2.0.u Changes:
  445.  
  446. 91. [NT] The C shell now ensures that the drive letters passed to the NT
  447.     kernel for the current directories are always upper case.  Lower case
  448.     drive letters have been found to be a problem when spawning POSIX
  449.     children.
  450.  
  451.  
  452. Fix Level 2.0.v Changes:
  453.  
  454. 92. The C shell now supports command and variable substitution in <<-style
  455.     inline i/o ("here" documents).  Quoting (with single, double or back
  456.     quotes) or escaping any part of the word immediately following the <<
  457.     operator suppresses the substitutions.
  458.  
  459. 93. Error reporting is now substantially improved.  Messages will now show
  460.     the line number of the statement that failed, not where it was called
  461.     from even if it was inside a user-defined procedure.  Also, by default,
  462.     the shell will print out a complete trace of the call stack showing
  463.     arguments passed to procedures, scripts, eval statements, etc., all the
  464.     way down the stack.  (To suppress call stack dumps, invoke the C shell
  465.     with the new -t option.)
  466.  
  467. 94. A new mode that provides more strict compatibility with the original
  468.     BSD C shell has been added.  Triggered by trying to run a script that
  469.     starts with #!/bin/csh or if the shell is invoked with the new -B
  470.     option, the C shell will attempt to process statements in a more fully
  471.     Berkeley-compatible fashion.  (Scripts that do not start with #!/bin/csh
  472.     will still be processed according to Hamilton C shell rules, even if
  473.     the -B option is used to request Berkeley compatibility interactively.)
  474.     In BSD compatibility mode:
  475.  
  476.    a. The status variable will reflect the return code from the rightmost
  477.       stage of a pipeline.  The tailstatus variable will be ignored.
  478.    b. All the shell variables will be snapshotted and all new variables
  479.       made local to the thread.
  480.    c. Berkeley-style $var[...] indexing notation will be used, where the
  481.       indexing is by word selection operators (like the :-editing operators)
  482.       rather than by expression.
  483.    d. All variable arrays (except argv) will start with element 1.
  484.       Accessing element 0 will give a null.
  485.    e. $0 or $argv[0] will be the scriptname.  $argv will be the rest of the
  486.       argument vector.  The bsdargv variable will be ignored.
  487.    f. The # character will not need to be followed by white space to be
  488.       considered the start of a comment.
  489.    g. The patterns in a case test (inside a switch) will be strings and need
  490.       not be quoted, rather than arbitrary expressions.  Also, the switch
  491.       value is evaluated as a wordlist which may contain variable or command
  492.       substitutions and wildcards and then rendered as a string.
  493.    h. endif and endsw will be predefined aliases for end (but only when
  494.       closing an if or switch, respectively).  breaksw will be a pre-defined
  495.       alias for break.
  496.    i. "set foo" and "setenv foo" will set foo to a null string, not dump
  497.       its value.
  498.    j. / and /= will perform integer division.
  499.    k. The right operand of the =~ and !~ pattern matching operators will be
  500.       taken as a word which may contain wildcards.
  501.    l. In an expression, a variable must be preceded by $.  If it doesn't, it'll
  502.       be taken as a literal string.
  503.  
  504.     The changes should allow most scripts to run without problems.  However,
  505.     there will still be a few differences:
  506.  
  507.    a. The escape character will still be controlled by the escapesym
  508.       variable (shared across all threads), which defaults to ^, not \.
  509.    b. Environmental variables will still be shared.  Changing them in a
  510.       script will change them as seen by the parent.
  511.    c. The special meaning of several break statements on one line will
  512.       not be supported.
  513.    d. unset and unsetenv still do not accept patterns.
  514.    e. The following commands are not supported: bg, exec, fg, glob, jobs,
  515.       limit, nice (but eval gives similar functionality), nohup, notify,
  516.       stop, suspend, unlimit and %job.
  517.    f. History references inside alias definitions will still not be
  518.       supported.
  519.    g. The (...) construct will isolate only the current directory, not all
  520.       variables and other state information.
  521.  
  522. 95. Running a statement in the background using the & flag at the end of the
  523.     line will cause a new "job ID" number rather than a thread ID to be
  524.     printed.  Any threads, processes or screens spawned by that thread will
  525.     inherit that same job ID.  The job ID can be passed to the kill command
  526.     to kill everything associated with that background job.  Also, the ps
  527.     command has been enhanced to show job ID numbers.
  528.  
  529. 96. $* is now supported as an alias for $argv.
  530.  
  531.  
  532. Fix Level 2.0.w Changes:
  533.  
  534. 97. A number of minor problems associated with supporting substitutions
  535.     inside <<-style inline i/o documents were fixed:  a) If there was a syntax
  536.     error, the prompt would not be properly reset to prompt1.  b) Single and
  537.     double quotes should have been treated as ordinary characters in inline
  538.     i/o.  (To quote something, only the escape character can be used.)  
  539.     c) Any line containing a substitution caused a blank line to be added
  540.     to the history list.  d) If a substitution was at the end of a line, an
  541.     extra space was erroneously added.
  542.  
  543. 98. [NT] The sleep command left a thread entry lying around in the threads list
  544.     after it had already exited.  It's now properly cleaned up.
  545.  
  546. 99. Filename completion with ^F did not quote special characters if there was
  547.     only a partial match.  It does now.
  548.  
  549. 100. Doing a "sed '#'" caused a segment fault.  It now works.
  550.  
  551.  
  552. Fix Level 2.0.x Changes:
  553.  
  554. 101. [NT] rm didn't work on read-only directories even with -f or -x.  It
  555.     does now.
  556.  
  557. 102. The more -t option for setting tabstops from the command line didn't
  558.     work.  It does now.
  559.  
  560. 103. diff, uniq, cut, fgrep, grep and sed shared a common i/o buffering
  561.     routine that had a bug that could cause them to crash or produce
  562.     erroneous results on files with line ends other than \r\n.  That's
  563.     been fixed.
  564.  
  565.  
  566. Fix Level 2.0.y Changes:
  567.  
  568. 104. There was a bug in the Berkeley compatibility mode introduced at 2.0.v
  569.     that would cause the shell to hang if a #!/bin/csh script that contained
  570.     any set statements was run more than once.  That's been fixed.
  571.  
  572.  
  573. Fix Level 2.0.z Changes:
  574.  
  575. 105. Calling the abs() built-in function without an argument caused the shell
  576.     to crash.  It now gives an error message as it should.
  577.  
  578.  
  579. Fix Level 2.0.27 Changes:
  580.  
  581. 106. The changes made at 2.0.v to provide call stack dumps caused line
  582.     numbers not to be shown in parser error messages when compiling scripts.
  583.     That's been fixed.
  584.  
  585. 107. The -I, +I, -O and +O command line options have been added to the C shell
  586.     to allow insert mode to be customized.
  587.  
  588. 108. [NT] mv didn't properly move read-only files across disk partitions.  It'd
  589.     make a copy, then complain it didn't have proper access.  It works now.
  590.  
  591.  
  592. Fix Level 2.1 Changes:
  593.  
  594. 109. [NT] First complete rebuild for the March beta.
  595.  
  596. 110. [NT] tar now knows that NT keeps track of timezone information.  The TZ
  597.     variable and the -g and -G options are no longer used.
  598.  
  599. 111. [NT] The shell is dramatically faster, especially at inserting into long
  600.     command lines and compiling scripts on the DEC Alpha and MIPS R4x00.
  601.  
  602. 112. The -b option has been added to the C shell to turn off Berkeley mode
  603.     even on scripts that start with #!/bin/csh.
  604.  
  605. 113. Error messages from the C shell should now all be properly displaying line
  606.     numbers where appropriate.
  607.  
  608. 114. A bug that potentially could have (but was never reported to have) caused 
  609.     the shell's unproc and unalias commands to crash was fixed.
  610.  
  611. 115. [NT] The cl.csh script in the samples directory has been updated for
  612.     the March NT beta and now knows about the hybrid compilers on the MIPS
  613.     and Alpha machines.  Use -old to get the old compilers.
  614.  
  615. 116. [NT] hlabel.exe can now set the label on a volume.  (There was no Win32 API
  616.     to support this under the October Beta.)
  617.  
  618. 117. [NT] The C shell -Z option now works.  (Previously, it was ignored under
  619.     NT because there was no support for it under the October Beta Win32.)
  620.  
  621. 118. [NT] The rm.exe command has been renamed hrm.exe and an "alias rm hrm"
  622.     command added to the default startup.csh script to avoid conflicts with
  623.     the brain-dead Microsoft rm.exe command supplied with the NT SDK.
  624.  
  625. 119. [OS/2 2.0] Inexplicably, DOS VDM applications were being started in invisible
  626.     windows.  Accessing them required typing Ctrl-Esc.  They're now properly
  627.     started in visible windows.
  628.  
  629.  
  630. Fix Level 2.1.a Changes:
  631.  
  632. 120. [NT] Touch, mv, cp and tar now know how to set the timestamps on directories.
  633.  
  634. 121. csh -XC now looks for a command immediately following the "C".  It no longer
  635.     tries to parse any remaining characters in that word as option characters and
  636.     no longer requires the command to start in the next word.
  637.  
  638.  
  639. Fix Level 2.1.b Changes:
  640.  
  641. 122. [NT] Hlabel would only change the label on the current drive.  It works
  642.     properly now.
  643.  
  644. 123. The C shell didn't properly handle $i[$j] and $i[$k[^]] references in
  645.     Berkeley compatibility mode.  That's been fixed.
  646.  
  647. 124. Set variables weren't always inherited by child threads in Berkeley mode.
  648.     For example,
  649.  
  650.        % set i = 1; echo `echo $i`
  651.  
  652.     didn't work.  It does now.
  653.  
  654.  
  655. Fix Level 2.1.c Changes:
  656.  
  657. 125. In Berkeley mode, double quoted substitutions involving $0 could fail.  E.g.,
  658.  
  659.       % echo "$0 a"
  660.  
  661.     caused the shell to crash.  It works now.
  662.  
  663. 126. The Berkeley C shell would accept case clauses that didn't have colons
  664.     following the test and those with quotes around the pattern.  This wasn't
  665.     the documented behavior but some users did write scripts that depended on
  666.     it so Hamilton C shell now allows that also in Berkeley mode.
  667.  
  668. 127. for i = 1 to 1 by -1; echo $i; end would loop thru 1, 0, -1, -2, -3, etc.,
  669.     rather than exiting after the first iteration.  That's fixed now.
  670.  
  671.  
  672. Fix Level 2.1.d Changes:
  673.  
  674. 128. [NT] Trying to set path[i] garbled the global variables lock.  That statement
  675.     would appear to work, but, e.g., trying then to do a setenv would hang and
  676.     eventually crash.  That's been fixed.
  677.  
  678. 129. In Berkeley mode, other indexed variable references such as @ i[$j]++ didn't
  679.     index properly.  They do now.
  680.  
  681. 130. [NT] The cl.csh script in the samples directory didn't properly work with -O
  682.     options.  It does now.
  683.     
  684.  
  685.  
  686. Known Bugs and Limitations
  687.  
  688. 1.  The keyboard editing logic only checks to see if the cursor's been moved
  689.     by a background process or thread when it reads the first keystroke.  That
  690.     catches most situations, but if you begin typing a command and then some
  691.     background activity starts writing to the screen or moving the cursor,
  692.     the result can be a scrambled display.
  693.  
  694. 2.  The C shell does not yet understand the special device names like CONIN$
  695.     that NT supports.  The following statement won't work in this build
  696.     but will in the next:
  697.  
  698.       cat < conin$
  699.  
  700. 3.  To kill a Win3.x or NT GUI app, the -! option must be used, specifying
  701.     that TerminateProcess should be called.  While certainly effective,
  702.     TerminateProcess does not notify any DLL's that the process is
  703.     exiting.
  704.  
  705. 4.  Touch'ing a directory on an OS/2 machine over Lan Manager doesn't do
  706.     anything; it works over a network to another NT machine.  This appears to
  707.     be a bug in Lan Manager.
  708.  
  709.  
  710.  
  711. Thank you for using Hamilton C shell.
  712.  
  713.  
  714.                   Douglas A. Hamilton
  715.                   April 28, 1993
  716.  
  717.                   Hamilton Laboratories
  718.                   13 Old Farm Road
  719.                   Wayland, MA  01778-3117
  720.                   USA
  721.  
  722.          phone:   508-358-5715
  723.            FAX:   508-358-1113
  724.  
  725.    BIX Network:   hamilton
  726.     CompuServe:   70034,2025
  727.       MCI Mail:   389-0321
  728.          Telex:   6503890321
  729.       Internet:   3890321@mcimail.com
  730.